const deepClone = (originVal) => {
  if (
    /**超级原型判断不能为undefined */
    Object.prototype.toString.call(originVal) === "[object Undefined]" ||
    /**还有不能是object复杂数据  所有数据类型的父类都是对象 */
    /**但是使用typeof简单数据类型hufianhui1字符串 */
    typeof originVal !== "object"
  ) {
    return originVal;
  } else {
    const result = Array.isArray(originVal) ? [] : {};
    if (/** 数组模式 */ Array.isArray(originVal)) {
      for (let index = 0; index < originVal.length; index++) {
        result[index] = deepClone(originVal[index]);
      }
    } else {
      for (const key in originVal) {
        /**让这个对象上实际存在这个key 不存在就不搞，因为有可能是作用域链上面的属性 */
        if (Object.prototype.hasOwnProperty.call(originVal, key)) {
          result[key] = deepClone(originVal[key]);
        }
      }
    }
    return result;
  }
};
const exArr = [
  "剑圣",
  "蛮王",
  {
    nickName: "苏安",
  },
];
const newArr = deepClone(exArr);
exArr[2] = "swssws";
console.debug(exArr);
console.debug(newArr, "121521296+");

("vue2与vue3的区别");
("1.底层的响应式数据实现方法由Obeject.defineProtype变成Proxy来实现");
"2.书写代码的时候采用的是选项式api，Vue3使用的是组合式api，按需导入，书写代码的时候更加灵活"
"3.底层解析器那里给虚拟dom增加了动静态的标记，只重新计算动态节点"
"4.vue3使用了tree sharking，将一些不需要的代码精简掉了，减小了打包的文件的大小"


"怎样"
"业务中有使用原型相关的内容嘛?"